[アップデート]Amazon GuardDutyのEC2ランタイム保護でRedHat/CentOS/Fedoraをサポートしました

[アップデート]Amazon GuardDutyのEC2ランタイム保護でRedHat/CentOS/Fedoraをサポートしました

Amazon GuardDutyのEC2 Runtime MonitoringでRedHat/CentOS/Fedoraがサポートされたので実際にEC2上のアクティビティを検出してみました
Clock Icon2024.11.27

こんにちは、臼田です。

みなさん、EC2の保護してますか?(挨拶

今回はAmazon GuardDutyのEC2 Runtime Protection機能で新たなサポートOSとしてRedHat,CentOS,Fedoraが追加されたのでこれを検証していきます。

Prerequisites for Amazon EC2 instance support - Amazon GuardDuty

概要

Amazon GuardDutyはAWS上の様々な脅威を検出するサービスです。デフォルトではEC2/IAM/S3に関する基本的な脅威を検出してくれますが、EC2の内部を検査するわけではありません。EC2の脅威検出はその周辺のネットワーク通信から不審なアクティビティを検出します。

EC2内部をチェックせずとも検出できることはメリットですが、一方で内部の詳細な状況を確認することができません。2024年4月にこれを解消する機能としてEC2 Runtime Monitoringがリリースされました。

https://dev.classmethod.jp/articles/guardduty-ec2-runtime-monitoring-ga/

これにより、EC2の内部にエージェントを自動でセットアップし、詳細な脅威の情報を取得することができるようになりました。

例えば、不正はアクティビティを実行したユーザーやプロセスを特定することが可能になりました。

これまで、何度か更新がありEC2 Runtime MonitoringがサポートしていたOSは以下でした。

  • Amazon Linux 2
  • Amazon Linux 2023
  • Ubuntu 20.04
  • Ubuntu 22.04
  • Debian 11
  • Debian 12

今回、これに加えて以下が追加されました。

  • RedHat 9.4
  • Fedora 34.0
  • CentOS 9.0

詳細な要件はPrerequisites for Amazon EC2 instance support - Amazon GuardDutyを確認してください。

なお、今回のアップデートはDocument history for Amazon GuardDuty - Amazon GuardDutyに出てきています。

以下のような通知内容です。

Updated functionality in Runtime Monitoring - Amazon EC2

Runtime Monitoring released a new agent version 1.5.0 for Amazon EC2 resources. With this new agent version, GuardDuty extends Runtime Monitoring support for Amazon EC2 resources that run on RedHat, CentOS, and Fedora. For more information, see Validating architectural requirements. For information about release notes, see GuardDuty security agent for Amazon EC2 resources.

なお、これに合わせてAmazon EKSでも同様のアップデートがあります。

やってみた

それでは実際に試してみましょう。今回はRed Hat Enterprise Linuxでの検出を以下の手順で実行していきます。

  • EC2を作成する
  • SSMエージェントを導入する
  • GuardDutyエージェントの自動セットアップを待つ
  • 不審なアクティビティの実行

大きな手順はこちらのユーザーガイドにあります。なお、今回はGuardDuty側のセットアップがされている想定で進めます。

EC2を作成する

まずはRed Hat Enterprise Linuxのインスタンスを作成します。GuardDutyエージェントがサポートしているのは9.4なので、9を選択します。

001_runtime_rhel

他の設定は適当で大丈夫ですが、SSMを利用するためのIAM Roleをアタッチするか、DHMCを設定しておきましょう。

SSMエージェントを導入する

GuardDutyエージェントの自動セットアップのためにSSMエージェントが必要になりますが、デフォルトでRHELではSSMエージェントがプリインストールされていません。

RHEL 8.x および 9.x を SSM Agent にインストール - AWS Systems Managerの手順でセットアップします。

[ec2-user@ip-172-31-15-199 ~]$ cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="9.4 (Plow)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="9.4"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Red Hat Enterprise Linux 9.4 (Plow)"
ANSI_COLOR="0;31"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:redhat:enterprise_linux:9::baseos"
HOME_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9"
BUG_REPORT_URL="https://bugzilla.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 9"
REDHAT_BUGZILLA_PRODUCT_VERSION=9.4
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.4"
[ec2-user@ip-172-31-15-199 ~]$ sudo dnf install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use "rhc" or "subscription-manager" to register.

Red Hat Enterprise Linux 9 for x86_64 - AppStream from RHUI (RPMs)   47 MB/s |  46 MB     00:00
Red Hat Enterprise Linux 9 for x86_64 - BaseOS from RHUI (RPMs)      45 MB/s |  38 MB     00:00
Red Hat Enterprise Linux 9 Client Configuration                      27 kB/s | 3.0 kB     00:00
amazon-ssm-agent.rpm                                                3.5 MB/s |  24 MB     00:06
Dependencies resolved.
====================================================================================================
 Package                    Architecture     Version                   Repository              Size
====================================================================================================
Installing:
 amazon-ssm-agent           x86_64           3.3.1345.0-1              @commandline            24 M

Transaction Summary
====================================================================================================
Install  1 Package

Total size: 24 M
Installed size: 122 M
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Running scriptlet: amazon-ssm-agent-3.3.1345.0-1.x86_64                                       1/1
  Preparing        :                                                                            1/1
  Running scriptlet: amazon-ssm-agent-3.3.1345.0-1.x86_64                                       1/1
  Installing       : amazon-ssm-agent-3.3.1345.0-1.x86_64                                       1/1
  Running scriptlet: amazon-ssm-agent-3.3.1345.0-1.x86_64                                       1/1
Created symlink /etc/systemd/system/multi-user.target.wants/amazon-ssm-agent.service → /etc/systemd/system/amazon-ssm-agent.service.

  Verifying        : amazon-ssm-agent-3.3.1345.0-1.x86_64                                       1/1
Installed products updated.

Installed:
  amazon-ssm-agent-3.3.1345.0-1.x86_64

Complete!
[ec2-user@ip-172-31-15-199 ~]$ sudo systemctl status amazon-ssm-agent --no-pager
● amazon-ssm-agent.service - amazon-ssm-agent
     Loaded: loaded (/etc/systemd/system/amazon-ssm-agent.service; enabled; preset: disabled)
     Active: active (running) since Wed 2024-11-27 06:49:10 UTC; 4s ago
   Main PID: 4036 (amazon-ssm-agen)
      Tasks: 15 (limit: 4400)
     Memory: 36.7M
        CPU: 205ms
     CGroup: /system.slice/amazon-ssm-agent.service
             ├─4036 /usr/bin/amazon-ssm-agent
             └─4102 /usr/bin/ssm-agent-worker

GuardDutyエージェントの自動セットアップを待つ

環境が適切に整っていれば、しばらくするとエージェントがセットアップされます。内部的にはSSMステートマネージャーにより実行されます。

インスタンス上では以下のコマンドで確認できます。

[ec2-user@ip-172-31-15-199 ~]$ sudo systemctl status amazon-guardduty-agent
● amazon-guardduty-agent.service - Amazon GuardDuty Agent
     Loaded: loaded (/usr/lib/systemd/system/amazon-guardduty-agent.service; enabled; preset: disab>
     Active: active (running) since Wed 2024-11-27 06:49:28 UTC; 5min ago
   Main PID: 4256 (amazon-guarddut)
      Tasks: 16 (limit: 4400)
     Memory: 79.4M (max: 128.0M available: 48.5M)
        CPU: 3.092s
     CGroup: /system.slice/amazon-guardduty-agent.service
             └─4256 /opt/aws/amazon-guardduty-agent/bin/amazon-guardduty-agent --worker-threads 8

無事セットアップされてしばらくすると、GuardDutyのマネジメントコンソールでもステータスを確認できます。

002_runtime_rhel

不審なアクティビティの実行

セットアップできたので不審なアクティビティを実行します。今回はコインマイナーを動かしてみます。実行した内容自体の詳細は割愛します。

しばらくすると無事検出されました。

003_runtime_rhel

検出は全部で6つとなり内訳は以下のとおりです。

  • 通常の検出
    • CryptoCurrency:EC2/BitcoinTool.B
    • CryptoCurrency:EC2/BitcoinTool.B!DNS
  • Runtime Monitorinによる検出
    • CryptoCurrency:Runtime/BitcoinTool.B
    • CryptoCurrency:Runtime/BitcoinTool.B!DNS
    • Impact:Runtime/CryptoMinerExecuted
  • Malware Protectionによる検出
    • Execution:EC2/MaliciousFile

Impact:Runtime/CryptoMinerExecutedを見てみましょう。実際に実行されたコインマイナーのプログラムであるxmrigのプロセスレベルの情報が出ています。ちゃんとRuntimeでの検出が動いていますね。

004_runtime_rhel

ついでにマルウェアスキャンによって検出されたExecution:EC2/MaliciousFileも見ておきましょう。実行されたファイル以外にも、それを取得した際に生成された圧縮されたファイルも一緒に検出してくれています。頼もしいですね。

005_runtime_rhel

まとめ

Amazon GuardDutyのRuntime ProtectionでRedHat/CentOS/Fedoraがサポートされたので、実際にRHELを利用して検出動作を確認しました。

自動セットアップを有効にしておくことでほぼ透過的にRuntimeの機能まで利用できるのはよいですね!ぜひ使っていきましょう!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.